<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Vulkan Memory Allocator: Statistics</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectalign">
   <div id="projectname">Vulkan Memory Allocator
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search/",'.html');
</script>
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search',false);
  $(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle"><div class="title">Statistics </div></div>
</div><!--header-->
<div class="contents">

<p>API elements that query current status of the allocator, from memory usage, budget, to full dump of the internal state in JSON format. See documentation chapter: <a class="el" href="statistics.html">Statistics</a>.  
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-nested-classes" class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:VmaStatistics" id="r_VmaStatistics"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_statistics.html">VmaStatistics</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculated statistics of memory usage e.g. in a specific memory type, heap, custom pool, or total.  <a href="struct_vma_statistics.html#details">More...</a><br /></td></tr>
<tr class="memitem:VmaDetailedStatistics" id="r_VmaDetailedStatistics"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_detailed_statistics.html">VmaDetailedStatistics</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">More detailed statistics than <a class="el" href="struct_vma_statistics.html" title="Calculated statistics of memory usage e.g. in a specific memory type, heap, custom pool,...">VmaStatistics</a>.  <a href="struct_vma_detailed_statistics.html#details">More...</a><br /></td></tr>
<tr class="memitem:VmaTotalStatistics" id="r_VmaTotalStatistics"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_total_statistics.html">VmaTotalStatistics</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">General statistics from current state of the Allocator - total memory usage across all memory heaps and types.  <a href="struct_vma_total_statistics.html#details">More...</a><br /></td></tr>
<tr class="memitem:VmaBudget" id="r_VmaBudget"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_vma_budget.html">VmaBudget</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Statistics of current memory usage and available budget for a specific memory heap.  <a href="struct_vma_budget.html#details">More...</a><br /></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-typedef-members" class="groupheader"><a id="typedef-members" name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:gac94bd1a382a3922ddc8de3af4d3ddd06" id="r_gac94bd1a382a3922ddc8de3af4d3ddd06"><td class="memItemLeft" align="right" valign="top">typedef struct VmaStatistics&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gac94bd1a382a3922ddc8de3af4d3ddd06">VmaStatistics</a></td></tr>
<tr class="memdesc:gac94bd1a382a3922ddc8de3af4d3ddd06"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculated statistics of memory usage e.g. in a specific memory type, heap, custom pool, or total.  <br /></td></tr>
<tr class="memitem:ga9ab0c535a6ca655dc63b8609ab4b8394" id="r_ga9ab0c535a6ca655dc63b8609ab4b8394"><td class="memItemLeft" align="right" valign="top">typedef struct VmaDetailedStatistics&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga9ab0c535a6ca655dc63b8609ab4b8394">VmaDetailedStatistics</a></td></tr>
<tr class="memdesc:ga9ab0c535a6ca655dc63b8609ab4b8394"><td class="mdescLeft">&#160;</td><td class="mdescRight">More detailed statistics than <a class="el" href="struct_vma_statistics.html" title="Calculated statistics of memory usage e.g. in a specific memory type, heap, custom pool,...">VmaStatistics</a>.  <br /></td></tr>
<tr class="memitem:ga68916e729e55d513f88ffafbadddb770" id="r_ga68916e729e55d513f88ffafbadddb770"><td class="memItemLeft" align="right" valign="top">typedef struct VmaTotalStatistics&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga68916e729e55d513f88ffafbadddb770">VmaTotalStatistics</a></td></tr>
<tr class="memdesc:ga68916e729e55d513f88ffafbadddb770"><td class="mdescLeft">&#160;</td><td class="mdescRight">General statistics from current state of the Allocator - total memory usage across all memory heaps and types.  <br /></td></tr>
<tr class="memitem:gaa078667e71b1ef24e87a6a30d128381d" id="r_gaa078667e71b1ef24e87a6a30d128381d"><td class="memItemLeft" align="right" valign="top">typedef struct VmaBudget&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gaa078667e71b1ef24e87a6a30d128381d">VmaBudget</a></td></tr>
<tr class="memdesc:gaa078667e71b1ef24e87a6a30d128381d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Statistics of current memory usage and available budget for a specific memory heap.  <br /></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-func-members" class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga36f3484de7aa6cd6edc4de9edfa0ff59" id="r_ga36f3484de7aa6cd6edc4de9edfa0ff59"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga36f3484de7aa6cd6edc4de9edfa0ff59">vmaCalculateStatistics</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, <a class="el" href="struct_vma_total_statistics.html">VmaTotalStatistics</a> *pStats)</td></tr>
<tr class="memdesc:ga36f3484de7aa6cd6edc4de9edfa0ff59"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves statistics from current state of the Allocator.  <br /></td></tr>
<tr class="memitem:ga9f88db9d46a432c0ad7278cecbc5eaa7" id="r_ga9f88db9d46a432c0ad7278cecbc5eaa7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga9f88db9d46a432c0ad7278cecbc5eaa7">vmaGetHeapBudgets</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, <a class="el" href="struct_vma_budget.html">VmaBudget</a> *pBudgets)</td></tr>
<tr class="memdesc:ga9f88db9d46a432c0ad7278cecbc5eaa7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves information about current memory usage and budget for all memory heaps.  <br /></td></tr>
<tr class="memitem:ga34d8e7d83774eed0caee5c5ae88e217d" id="r_ga34d8e7d83774eed0caee5c5ae88e217d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga34d8e7d83774eed0caee5c5ae88e217d">vmaGetPoolStatistics</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, <a class="el" href="struct_vma_pool.html">VmaPool</a> pool, <a class="el" href="struct_vma_statistics.html">VmaStatistics</a> *pPoolStats)</td></tr>
<tr class="memdesc:ga34d8e7d83774eed0caee5c5ae88e217d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves statistics of existing <a class="el" href="struct_vma_pool.html" title="Represents custom memory pool.">VmaPool</a> object.  <br /></td></tr>
<tr class="memitem:ga50ba0eb25d2b363b792be4645ca7a380" id="r_ga50ba0eb25d2b363b792be4645ca7a380"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga50ba0eb25d2b363b792be4645ca7a380">vmaCalculatePoolStatistics</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, <a class="el" href="struct_vma_pool.html">VmaPool</a> pool, <a class="el" href="struct_vma_detailed_statistics.html">VmaDetailedStatistics</a> *pPoolStats)</td></tr>
<tr class="memdesc:ga50ba0eb25d2b363b792be4645ca7a380"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves detailed statistics of existing <a class="el" href="struct_vma_pool.html" title="Represents custom memory pool.">VmaPool</a> object.  <br /></td></tr>
<tr class="memitem:ga52d810e1222c592e5d80556ad005f1e6" id="r_ga52d810e1222c592e5d80556ad005f1e6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga52d810e1222c592e5d80556ad005f1e6">vmaBuildVirtualBlockStatsString</a> (<a class="el" href="struct_vma_virtual_block.html">VmaVirtualBlock</a> virtualBlock, char **ppStatsString, VkBool32 detailedMap)</td></tr>
<tr class="memdesc:ga52d810e1222c592e5d80556ad005f1e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Builds and returns a null-terminated string in JSON format with information about given <a class="el" href="struct_vma_virtual_block.html" title="Handle to a virtual block object that allows to use core allocation algorithm without allocating any ...">VmaVirtualBlock</a>.  <br /></td></tr>
<tr class="memitem:ga47fb8d8aa69df4a7c23a9719b4080623" id="r_ga47fb8d8aa69df4a7c23a9719b4080623"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga47fb8d8aa69df4a7c23a9719b4080623">vmaFreeVirtualBlockStatsString</a> (<a class="el" href="struct_vma_virtual_block.html">VmaVirtualBlock</a> virtualBlock, char *pStatsString)</td></tr>
<tr class="memdesc:ga47fb8d8aa69df4a7c23a9719b4080623"><td class="mdescLeft">&#160;</td><td class="mdescRight">Frees a string returned by <a class="el" href="#ga52d810e1222c592e5d80556ad005f1e6" title="Builds and returns a null-terminated string in JSON format with information about given VmaVirtualBlo...">vmaBuildVirtualBlockStatsString()</a>.  <br /></td></tr>
<tr class="memitem:gaa4fee7eb5253377599ef4fd38c93c2a0" id="r_gaa4fee7eb5253377599ef4fd38c93c2a0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#gaa4fee7eb5253377599ef4fd38c93c2a0">vmaBuildStatsString</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, char **ppStatsString, VkBool32 detailedMap)</td></tr>
<tr class="memdesc:gaa4fee7eb5253377599ef4fd38c93c2a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Builds and returns statistics as a null-terminated string in JSON format.  <br /></td></tr>
<tr class="memitem:ga3104eb30d8122c84dd8541063f145288" id="r_ga3104eb30d8122c84dd8541063f145288"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ga3104eb30d8122c84dd8541063f145288">vmaFreeStatsString</a> (<a class="el" href="struct_vma_allocator.html">VmaAllocator</a> allocator, char *pStatsString)</td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<p>API elements that query current status of the allocator, from memory usage, budget, to full dump of the internal state in JSON format. See documentation chapter: <a class="el" href="statistics.html">Statistics</a>. </p>
<a name="doc-typedef-members" id="doc-typedef-members"></a><h2 id="header-doc-typedef-members" class="groupheader">Typedef Documentation</h2>
<a id="gaa078667e71b1ef24e87a6a30d128381d" name="gaa078667e71b1ef24e87a6a30d128381d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa078667e71b1ef24e87a6a30d128381d">&#9670;&#160;</a></span>VmaBudget</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct VmaBudget VmaBudget</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Statistics of current memory usage and available budget for a specific memory heap. </p>
<p>These are fast to calculate. See function <a class="el" href="#ga9f88db9d46a432c0ad7278cecbc5eaa7" title="Retrieves information about current memory usage and budget for all memory heaps.">vmaGetHeapBudgets()</a>. </p>

</div>
</div>
<a id="ga9ab0c535a6ca655dc63b8609ab4b8394" name="ga9ab0c535a6ca655dc63b8609ab4b8394"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9ab0c535a6ca655dc63b8609ab4b8394">&#9670;&#160;</a></span>VmaDetailedStatistics</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct VmaDetailedStatistics VmaDetailedStatistics</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>More detailed statistics than <a class="el" href="struct_vma_statistics.html" title="Calculated statistics of memory usage e.g. in a specific memory type, heap, custom pool,...">VmaStatistics</a>. </p>
<p>These are slower to calculate. Use for debugging purposes. See functions: <a class="el" href="#ga36f3484de7aa6cd6edc4de9edfa0ff59" title="Retrieves statistics from current state of the Allocator.">vmaCalculateStatistics()</a>, <a class="el" href="#ga50ba0eb25d2b363b792be4645ca7a380" title="Retrieves detailed statistics of existing VmaPool object.">vmaCalculatePoolStatistics()</a>.</p>
<p>Previous version of the statistics API provided averages, but they have been removed because they can be easily calculated as:</p>
<div class="fragment"><div class="line">VkDeviceSize allocationSizeAvg = detailedStats.statistics.allocationBytes / detailedStats.statistics.allocationCount;</div>
<div class="line">VkDeviceSize unusedBytes = detailedStats.statistics.blockBytes - detailedStats.statistics.allocationBytes;</div>
<div class="line">VkDeviceSize unusedRangeSizeAvg = unusedBytes / detailedStats.unusedRangeCount;</div>
</div><!-- fragment --> 
</div>
</div>
<a id="gac94bd1a382a3922ddc8de3af4d3ddd06" name="gac94bd1a382a3922ddc8de3af4d3ddd06"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac94bd1a382a3922ddc8de3af4d3ddd06">&#9670;&#160;</a></span>VmaStatistics</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct VmaStatistics VmaStatistics</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Calculated statistics of memory usage e.g. in a specific memory type, heap, custom pool, or total. </p>
<p>These are fast to calculate. See functions: <a class="el" href="#ga9f88db9d46a432c0ad7278cecbc5eaa7" title="Retrieves information about current memory usage and budget for all memory heaps.">vmaGetHeapBudgets()</a>, <a class="el" href="#ga34d8e7d83774eed0caee5c5ae88e217d" title="Retrieves statistics of existing VmaPool object.">vmaGetPoolStatistics()</a>. </p>

</div>
</div>
<a id="ga68916e729e55d513f88ffafbadddb770" name="ga68916e729e55d513f88ffafbadddb770"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga68916e729e55d513f88ffafbadddb770">&#9670;&#160;</a></span>VmaTotalStatistics</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct VmaTotalStatistics VmaTotalStatistics</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>General statistics from current state of the Allocator - total memory usage across all memory heaps and types. </p>
<p>These are slower to calculate. Use for debugging purposes. See function <a class="el" href="#ga36f3484de7aa6cd6edc4de9edfa0ff59" title="Retrieves statistics from current state of the Allocator.">vmaCalculateStatistics()</a>. </p>

</div>
</div>
<a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Function Documentation</h2>
<a id="gaa4fee7eb5253377599ef4fd38c93c2a0" name="gaa4fee7eb5253377599ef4fd38c93c2a0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa4fee7eb5253377599ef4fd38c93c2a0">&#9670;&#160;</a></span>vmaBuildStatsString()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vmaBuildStatsString </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct_vma_allocator.html">VmaAllocator</a></td>          <td class="paramname"><span class="paramname"><em>allocator</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char **</td>          <td class="paramname"><span class="paramname"><em>ppStatsString</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">VkBool32</td>          <td class="paramname"><span class="paramname"><em>detailedMap</em></span>&#160;)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Builds and returns statistics as a null-terminated string in JSON format. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir"></td><td class="paramname">allocator</td><td></td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">ppStatsString</td><td>Must be freed using <a class="el" href="#ga3104eb30d8122c84dd8541063f145288">vmaFreeStatsString()</a> function. </td></tr>
    <tr><td class="paramdir"></td><td class="paramname">detailedMap</td><td></td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ga52d810e1222c592e5d80556ad005f1e6" name="ga52d810e1222c592e5d80556ad005f1e6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga52d810e1222c592e5d80556ad005f1e6">&#9670;&#160;</a></span>vmaBuildVirtualBlockStatsString()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vmaBuildVirtualBlockStatsString </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct_vma_virtual_block.html">VmaVirtualBlock</a></td>          <td class="paramname"><span class="paramname"><em>virtualBlock</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char **</td>          <td class="paramname"><span class="paramname"><em>ppStatsString</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">VkBool32</td>          <td class="paramname"><span class="paramname"><em>detailedMap</em></span>&#160;)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Builds and returns a null-terminated string in JSON format with information about given <a class="el" href="struct_vma_virtual_block.html" title="Handle to a virtual block object that allows to use core allocation algorithm without allocating any ...">VmaVirtualBlock</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir"></td><td class="paramname">virtualBlock</td><td>Virtual block. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">ppStatsString</td><td>Returned string. </td></tr>
    <tr><td class="paramdir"></td><td class="paramname">detailedMap</td><td>Pass <span class="tt">VK_FALSE</span> to only obtain statistics as returned by <a class="el" href="group__group__virtual.html#ga93c5741bca44b43e5b849cacbd616098" title="Calculates and returns detailed statistics about virtual allocations and memory usage in given VmaVir...">vmaCalculateVirtualBlockStatistics()</a>. Pass <span class="tt">VK_TRUE</span> to also obtain full list of allocations and free spaces.</td></tr>
  </table>
  </dd>
</dl>
<p>Returned string must be freed using <a class="el" href="#ga47fb8d8aa69df4a7c23a9719b4080623" title="Frees a string returned by vmaBuildVirtualBlockStatsString().">vmaFreeVirtualBlockStatsString()</a>. </p>

</div>
</div>
<a id="ga50ba0eb25d2b363b792be4645ca7a380" name="ga50ba0eb25d2b363b792be4645ca7a380"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga50ba0eb25d2b363b792be4645ca7a380">&#9670;&#160;</a></span>vmaCalculatePoolStatistics()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vmaCalculatePoolStatistics </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct_vma_allocator.html">VmaAllocator</a></td>          <td class="paramname"><span class="paramname"><em>allocator</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_vma_pool.html">VmaPool</a></td>          <td class="paramname"><span class="paramname"><em>pool</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_vma_detailed_statistics.html">VmaDetailedStatistics</a> *</td>          <td class="paramname"><span class="paramname"><em>pPoolStats</em></span>&#160;)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Retrieves detailed statistics of existing <a class="el" href="struct_vma_pool.html" title="Represents custom memory pool.">VmaPool</a> object. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir"></td><td class="paramname">allocator</td><td>Allocator object. </td></tr>
    <tr><td class="paramdir"></td><td class="paramname">pool</td><td>Pool object. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">pPoolStats</td><td>Statistics of specified pool. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ga36f3484de7aa6cd6edc4de9edfa0ff59" name="ga36f3484de7aa6cd6edc4de9edfa0ff59"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga36f3484de7aa6cd6edc4de9edfa0ff59">&#9670;&#160;</a></span>vmaCalculateStatistics()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vmaCalculateStatistics </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct_vma_allocator.html">VmaAllocator</a></td>          <td class="paramname"><span class="paramname"><em>allocator</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_vma_total_statistics.html">VmaTotalStatistics</a> *</td>          <td class="paramname"><span class="paramname"><em>pStats</em></span>&#160;)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Retrieves statistics from current state of the Allocator. </p>
<p>This function is called "calculate" not "get" because it has to traverse all internal data structures, so it may be quite slow. Use it for debugging purposes. For faster but more brief statistics suitable to be called every frame or every allocation, use <a class="el" href="#ga9f88db9d46a432c0ad7278cecbc5eaa7" title="Retrieves information about current memory usage and budget for all memory heaps.">vmaGetHeapBudgets()</a>.</p>
<p>Note that when using allocator from multiple threads, returned information may immediately become outdated. </p>

</div>
</div>
<a id="ga3104eb30d8122c84dd8541063f145288" name="ga3104eb30d8122c84dd8541063f145288"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga3104eb30d8122c84dd8541063f145288">&#9670;&#160;</a></span>vmaFreeStatsString()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vmaFreeStatsString </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct_vma_allocator.html">VmaAllocator</a></td>          <td class="paramname"><span class="paramname"><em>allocator</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *</td>          <td class="paramname"><span class="paramname"><em>pStatsString</em></span>&#160;)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ga47fb8d8aa69df4a7c23a9719b4080623" name="ga47fb8d8aa69df4a7c23a9719b4080623"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga47fb8d8aa69df4a7c23a9719b4080623">&#9670;&#160;</a></span>vmaFreeVirtualBlockStatsString()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vmaFreeVirtualBlockStatsString </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct_vma_virtual_block.html">VmaVirtualBlock</a></td>          <td class="paramname"><span class="paramname"><em>virtualBlock</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *</td>          <td class="paramname"><span class="paramname"><em>pStatsString</em></span>&#160;)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Frees a string returned by <a class="el" href="#ga52d810e1222c592e5d80556ad005f1e6" title="Builds and returns a null-terminated string in JSON format with information about given VmaVirtualBlo...">vmaBuildVirtualBlockStatsString()</a>. </p>

</div>
</div>
<a id="ga9f88db9d46a432c0ad7278cecbc5eaa7" name="ga9f88db9d46a432c0ad7278cecbc5eaa7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9f88db9d46a432c0ad7278cecbc5eaa7">&#9670;&#160;</a></span>vmaGetHeapBudgets()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vmaGetHeapBudgets </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct_vma_allocator.html">VmaAllocator</a></td>          <td class="paramname"><span class="paramname"><em>allocator</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_vma_budget.html">VmaBudget</a> *</td>          <td class="paramname"><span class="paramname"><em>pBudgets</em></span>&#160;)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Retrieves information about current memory usage and budget for all memory heaps. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir"></td><td class="paramname">allocator</td><td></td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">pBudgets</td><td>Must point to array with number of elements at least equal to number of memory heaps in physical device used.</td></tr>
  </table>
  </dd>
</dl>
<p>This function is called "get" not "calculate" because it is very fast, suitable to be called every frame or every allocation. For more detailed statistics use <a class="el" href="#ga36f3484de7aa6cd6edc4de9edfa0ff59" title="Retrieves statistics from current state of the Allocator.">vmaCalculateStatistics()</a>.</p>
<p>Note that when using allocator from multiple threads, returned information may immediately become outdated. </p>

</div>
</div>
<a id="ga34d8e7d83774eed0caee5c5ae88e217d" name="ga34d8e7d83774eed0caee5c5ae88e217d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga34d8e7d83774eed0caee5c5ae88e217d">&#9670;&#160;</a></span>vmaGetPoolStatistics()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vmaGetPoolStatistics </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct_vma_allocator.html">VmaAllocator</a></td>          <td class="paramname"><span class="paramname"><em>allocator</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_vma_pool.html">VmaPool</a></td>          <td class="paramname"><span class="paramname"><em>pool</em></span>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_vma_statistics.html">VmaStatistics</a> *</td>          <td class="paramname"><span class="paramname"><em>pPoolStats</em></span>&#160;)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Retrieves statistics of existing <a class="el" href="struct_vma_pool.html" title="Represents custom memory pool.">VmaPool</a> object. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir"></td><td class="paramname">allocator</td><td>Allocator object. </td></tr>
    <tr><td class="paramdir"></td><td class="paramname">pool</td><td>Pool object. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">pPoolStats</td><td>Statistics of specified pool.</td></tr>
  </table>
  </dd>
</dl>
<p>Note that when using the pool from multiple threads, returned information may immediately become outdated. </p>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.14.0
</small></address>
</div><!-- doc-content -->
</body>
</html>
